This application claims priority to GB Application No. 0918297.3 filed Oct. 19, 2009, the entire contents of which are incorporated herein by reference.
1. Field of the Invention
This invention relates to the field of data processing systems. More particularly, this invention relates to the control of program flow within data processing systems.
2. Description of the Prior Art
It is known to provide data processing systems with instruction decoder circuitry responsive to program instructions to generate one or more control signals for controlling processing circuitry to perform data processing operations specified by the program instructions. A convenient way of organising programs is to divide them into routines or functions which can be called as required. As an example, code may be written and compiled to perform a function, such as the calculation of a Fourier transform upon a set of data values. This function may be called from a number of different points within the program flow. It is also possible that in a system including more than one set of hardware for executing program instructions, one set of hardware may execute one set of instructions while another set of hardware executes another set of instructions. Within this environment, one set of hardware may invoke a function, such as a Fourier transform, to be executed by another set of hardware. Within such an environment, it is possible to form specialised hardware for executing particular functions.
An example of special purpose hardware for executing particular functions is a data engine. Data engines may be provided to perform computationally intensive tasks, such as, for example, media processing. Data engines typically include special purpose hardware designed to efficiently execute the tasks associated with the data engine. Such a data engine may operate in conjunction with a general purpose processor which schedules tasks to be executed by the data engine. In some instances, it is possible for the data engine itself to schedule its own tasks for execution by the data engine using a scheduling program executing upon the data engine.
The development and testing of programs to execute particular functions is expensive and time consuming. It is desirable that programs should require a low amount of memory storage.